package es.uji.viselab.robot;

public enum RobotCatalog {

	ABBIRB140("ABB IRB 140", 6, true) {
		@Override
		public double[] getDefaultJointsPosition() {
			double[] joints = { 0, 0, Math.PI / 2, 0, 0, 0, 0 };
			return joints;
		}
		@Override
		public String toString() {
			return this.name;
		}
	},
	VABBIRB140("ABB IRB 140 (Virtual)",6, false) {
		@Override
		public double[] getDefaultJointsPosition() {
			double[] joints = { 0, 0, Math.PI / 2, 0, 0, 0, 0 };
			return joints;
		}
		@Override
		public String toString() {
			return this.name;
		}
	},
	FLYING_CAMERA("Flying camera",0, false) {
		@Override
		public double[] getDefaultJointsPosition() {
			return new double[0];
		}
		@Override
		public String toString() {
			return this.name;
		}
	},
	FANUCARC120("FANUC 120",6, true) {
		@Override
		public double[] getDefaultJointsPosition() {
			double[] joints = { 0, 0, 0, 0, -Math.PI / 2, 0 };
			return joints;
		}
		@Override
		public String toString() {
			return this.name;
		}
	}, VFANUCARC120("FANUC 120 (virtual)", 6,false) {
		@Override
		public double[] getDefaultJointsPosition() {
			double[] joints = { 0, 0, 0, 0, -Math.PI / 2, 0 };
			return joints;
		}
		@Override
		public String toString() {
			return this.name;
		}
		
	}, ;

	protected String name;
	protected boolean real;
	protected int numberJoints;

	RobotCatalog(String name, int numJoints, boolean real) {
		this.numberJoints=numJoints;
		this.name = name;
		this.real = real;
	}
	

	public boolean isReal() {
		return real;
	}

	public abstract double[] getDefaultJointsPosition();


	public int getNumberJoints() {
		return numberJoints;
	}

}
